﻿namespace LogisticsTrackingWebApi_V2.Services
{
    /// <summary>
    /// 物流提供者工厂接口
    /// </summary>
    public interface ILogisticsProviderFactory
    {
        /// <summary>
        /// 根据公司代码获取物流提供者
        /// </summary>
        /// <param name="companyCode">公司代码</param>
        /// <returns>物流提供者</returns>
        ILogisticsProvider GetProvider(string companyCode);

        /// <summary>
        /// 获取所有支持的物流提供者
        /// </summary>
        /// <returns>物流提供者列表</returns>
        IEnumerable<ILogisticsProvider> GetAllProviders();

        /// <summary>
        /// 尝试根据运单号猜测物流提供者
        /// </summary>
        /// <param name="trackingNumber">运单号</param>
        /// <returns>可能的物流提供者</returns>
        ILogisticsProvider? GuessProvider(string trackingNumber);
    }
}
